home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / cgazv5n5.arc / LIST10.C < prev    next >
C/C++ Source or Header  |  1991-09-23  |  868b  |  35 lines

  1. /*---------------------------------------- Listing 10 -----
  2.  * Demonstration of longjmp() and setjmp()
  3.  * See Listing 1 for copyright terms.
  4.  *-------------------------------------------------------*/
  5. #include <stdio.h>
  6. #include <setjmp.h>
  7.  
  8. void main ( void );
  9.  
  10. void main()
  11. {
  12.     jmp_buf PgmState;
  13.     int JmpStatus;
  14.  
  15.     JmpStatus = setjmp ( PgmState );
  16.  
  17.     if ( JmpStatus == 0 ) 
  18.     {
  19.         printf
  20.           ( "I just happen to be here since I fell into it\n" );
  21.         printf ( "But now, I'll mix things up a little!\n" );
  22.         longjmp ( PgmState, 25 );
  23.     }
  24.     else 
  25.     {
  26.         printf
  27.          ("I've been thrown here with value %d\n", JmpStatus );
  28.         if ( JmpStatus < 0 )
  29.             return;
  30.     }
  31.  
  32.     printf ( "That was fun\n" );
  33.     printf ( "Let's do this one last time\n" );
  34.     longjmp ( PgmState, -1 );
  35. }